<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>RegExp</title>
	</head>
	<body>
		
		<script >
			/*
			第一个参数是 正则表达式
			第二个参数是 匹配模式，例如有忽略大小写，和全局匹配，贪婪匹配等
			**/
			var reg = new RegExp("a","i");
			var str = "Abcd";
			var result = reg.test(str);

			console.log(typeof reg);
			console.log(reg.test(str));
			// 或的关系，可以是a，b，c的三者之间的一种
			reg = /a|b|c/;
			// [] 里的内容也是或的关系
			/**
			 * [ab]=a|b
			 * [a-z] 任意小写字母
			 * [A-Z] 任意大写字母
			 * [A-z] 任意字母
			 * [0-9]
			 * */
			reg = /[a-z]/;
			/***
			 * 检查一个字符串是否还有abc adc aec
			 * **/
			reg = /a[bde]c/;

			console.log(reg.test("aec"));
			// [^] ^有取反的意思，表示除了
			reg = /[^ab]/;

			/**
			 * 正则需要和字符串结合才会更加强大
			 * 
			*/

			var s = "123dsf34fsdafg";
			//任意字母
			var result = str.split(/[A-z]/);

			/**
			 * search
			 * - 可以搜索字符串是否含有指定内容
			 * - 如果搜索到指定内容，则会返回第一次出现的索引，如果没有就返回 -1
			 * - 它可以接受一个正则表达式作为参数，然后会根据正则表达式去检索字符串
			 * - 他不能全局匹配，即便这只了也没用
			 * **/
			s = "hello abc hellp aec afc";

			var result = str.search(/a[b3f]c/);

			console.log(result);

			/**
			 * mathch 
			 * - 可以根据正则表达式，从一个字符串中将符合条件的内容提取出来
			  - 默认情况下我们的match只会找到起一个符合要求的内容，找到以后就停止检索
			  我们可以设置正则表达式为全局匹配模式，这样就会匹配所有内容
			 * **/
			str = "1asdfbs134bn2ACD";

			result = str.match(/[a-z]/gi);//全局 且忽略大小写
			// match 会匹配到内容封装到一个数组里，返回即使只查询一个结果
			console.log(result);

			/***
			 * 
			 * replace()
			 * - 可以将字符串中指定内容替换为内容
			 * - 参数
			 * 		1.被替换的内容
			 * 		2.新的内容
			 * - 默认只会替换第一个，但是你可以设置正则来匹配
			*/

			/**
			 * 检查一个字符中是否含有
			 * 
			 * . 表示任意单个字符，除了换行，和行结束符
			 * 
			 * \w
			 * 	- 任意字母，数字,下划线[A-z0-9_]
			 * \W
			 * 	- 除了字母数字下划线[^A-z0-9_]
			 * \d
			 * 	- 任意的数字 [0-9]
			 * \D
			 * 	- 除了数字 [^0-9]
			 * \s 
			 * - 空格
			 * \S
			 * - 除了空格
			 * \b
			 * - 单词边界
			 * \B
			 * - 除了单词边界
			 * 
			 * **/
			var reg = /\./;
			/**
			 * 单词边界，只能完完全全的按照给定的单词查找
			 * 
			 * 例如查找一个单词 child
			 * 
			 * 你可以这样写 /child/
			 * 
			 * 对于任意 hello children 都是可以匹配到的
			 * 
			 * 但是这是不对的，我们只需要child，明显上面是不符合条件
			 * 
			 * 所以你可以这样写 /\bchild\b/
			 * child的前后成为了单词的边界，所以以上不会匹配成功
			 * **/

			 /**
			  * 去除字符串的前后的空格
			  * 
			  * 
			  * */
			 var usrname = "    ad   min  ";
			 // 以 空格开头或者空格结尾
			 usrname = usrname.replace(/^\s*|\s*$/g,"");

			 /**
			  * 电子邮件联系
			  * 
			  *  xxxx		@	xxx.com.cn
			  * 
			  *  任意数字下划线@任意字母数字(不可以下划线).任意字母(2-5)
			  	/^\w{3,} (\.\w+)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}$/
			 	 * **/

		</script>
	</body>
</html>
